package com.tiancheng.trade.payment.channel.umsmop.request;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.util.List;

/**
 * 银联商务Mop退款参数
 */
@Setter
@Getter
@NoArgsConstructor
public class UmsMopRefundOrderRequest extends BaseUmsMopRequest {
    /**
     * 账单日期，格式yyyy-MM-dd （扫码支付使用）
     */
    private String billDate;
    /**
     * 必传：FALSE；支付订单号；min=6 max=64；
     */
    private String targetOrderId;

    /**
     * 必传：TRUE；要退货的金额；若下单接口中上送了分钟标记字段divisionFlag，
     * 则该字段refundAmount等于platformAmount加上subOrders中totalAmount全额退款时refundAmount等于支付总金额totalAmount min=1 max=100000000；
     */
    private Integer refundAmount;
    /**
     * 必传：FALSE；针对平台商户分账金额的退款金额；若下单接口中上送了分账标记字段divisionFlag，
     * 则该字段必传且 退款接口platformAmount小于下单接口中上送的platformAmount全额退款时platformAmount不传 min=0 max=100000000；
     */
    private Integer platformAmount;
    /**
     * 子订单信息列表
     */
    private List<SubOrder> subOrders;

    /**
     * 子订单信息
     * 若下单接口中上送了分账标记字段divisionFlag，则该字段必传且退款接口totalAmount小于下单接口中上送的subOrders中对应mid下的totalAmount。
     * 另外：每次只能针对subOrders中的一个子商户号进行退款。全额退款时subOrders不传
     */
    @Setter
    @Getter
    @NoArgsConstructor
    public static class SubOrder {
        /**
         * 必传：FALSE；子商户号；min=8 max=32；
         */
        private String mid;
        /**
         * 必传：FALSE；商户子订单号；min=6 max=32长度不超过32位；
         */
        private String merOrderId;
        /**
         * 必传：FALSE；商户退款子订单号；min=6 max=32长度不超过32位；
         */
        private String refundOrderId;
        /**
         * 必传：FALSE；子商户分账金额；min=0 max=100000000；
         */
        private Integer totalAmount;
    }

    /**
     * 必传：FALSE；退货说明； max=255；
     */
    private String refundDesc;
    /**
     * 必传：FALSE；退货交易的订单号，如不指定，则系统自动生成。如商户指定，须以4位来源编号（由银商分配）开头。；min=6 max=32；
     */
    private String refundOrderId;

    /**
     * 扫码订单ID；
     */
    private String billNo;
}
